跳到主要内容

JZ32 把数组排成最小的数

https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993

import java.util.ArrayList;
import java.lang.StringBuilder;

public class Solution {
public String PrintMinNumber(int [] numbers) {
int len = numbers.length;
if (len < 1) return "";

// 在这里自定义一个比较大小的函数,比较两个字符串s1, s2大小的时候,
// 先将它们拼接起来,比较 s1+s2,和 s2+s1 那个大,如果 s1+s2 大,
// 那说明 s2 应该放前面,所以按这个规则,s2 就应该排在 s1 前面。

for (int i = 0; i < len; i++) {
for (int j = i + 1; j < len; j++) {
int a = Integer.valueOf(numbers[i] + "" + numbers[j]);
int b = Integer.valueOf(numbers[j] + "" + numbers[i]);

if (a > b) {
int t = numbers[i];
numbers[i] = numbers[j];
numbers[j] = t;
}
}
}

StringBuilder str = new StringBuilder();
for (int i = 0; i < len; i++) {
str.append(numbers[i]);
}

return str.toString();
}

}